package com.zkthink.ceres.product.service;

import java.util.List;

import com.zkthink.base.service.SuperService;
import com.zkthink.ceres.order.dto.OrderProductDTO;
import com.zkthink.ceres.product.dto.LogisticsCostDTO;
import com.zkthink.ceres.product.entity.Logistics;

/**
 * <p>
 * 业务接口
 * 物流设置
 * </p>
 *
 * @author vivi.huang
 * @date 2020-05-08
 */
public interface LogisticsService extends SuperService<Logistics> {



    /**
     * 自动计算运费 根据收货地址的市字段匹配物流方案的区域 筛选出最贵
     * @param tenantCode 商户code
     * @param provinceOfReceiveAddress  收货地址的城市
     * @param cityOfReceiveAddress  收货地址的城市
     * @param orderProductDTOList   订单的商品信息
     * @return
     */
    long calculateTransportationCost(String tenantCode, String provinceOfReceiveAddress, String cityOfReceiveAddress, List<OrderProductDTO> orderProductDTOList);

    /**
     * 自动计算运费 根据收货地址的市字段匹配物流方案的区域 筛选出最贵
     * 返回合适的物流运费dto
     * @param tenantCode 商户code
     * @param provinceOfReceiveAddress  收货地址的城市
     * @param cityOfReceiveAddress  收货地址的城市
     * @param orderProductDTOList   订单的商品信息
     * @return
     */
    LogisticsCostDTO getSuitableLogisticsCost(String tenantCode, String provinceOfReceiveAddress, String cityOfReceiveAddress, List<OrderProductDTO> orderProductDTOList);

    /**
     * 删除物流信息
     * @param ids
     */
    void removeLogisticsAndDetail(List<Long> ids);
}
